Documentation

LeanPool.MatchingLogic.EntryIII.SymbolSupport

MatchingLogic.EntryIII.SymbolSupport #

theorem MatchingLogic.Pattern.head_mem_symbolSupport {S : Signature} {Var : Type} [DecidableEq S.Sym] (sigma : S.Sym) (args : Fin (S.arity sigma) → Pattern S Var) :
sigma ∈ (app sigma args).symbolSupport

Every head symbol belongs to the support of its application pattern.

theorem MatchingLogic.Pattern.argument_symbolSupport_subset {S : Signature} {Var : Type} [DecidableEq S.Sym] (sigma : S.Sym) (args : Fin (S.arity sigma) → Pattern S Var) (i : Fin (S.arity sigma)) :
(args i).symbolSupport ⊆ (app sigma args).symbolSupport

Every symbol of an argument belongs to the support of the whole application.

theorem MatchingLogic.Pattern.symbolSupport_conj {S : Signature} {Var : Type} [DecidableEq S.Sym] (l : List (Pattern S Var)) :
(conj l).symbolSupport = List.foldr (fun (p : Pattern S Var) (support : Finset S.Sym) => p.symbolSupport ∪ support) ∅ l

The support of a finite conjunction is the union of the supports of its members.