(Big) Disjunction and Conjunction #
Here we define ⋀ and ⋁ on formulas and seveal helper lemmas.
Conjunction #
The conjunction of a Finset of formulas, via Finset.pdlSort.
Instances For
Disjunction #
The disjunction of a Finset of formulas, via Finset.pdlSort.
Instances For
Disjunction of Conjunctions #
Disjunction of the conjunctions represented by a list of formula lists.
Equations
- PDL.discon [] = ⊥
- PDL.discon [X] = PDL.con X
- PDL.discon (X :: rest) = (PDL.con X).or (PDL.discon rest)
Instances For
Variant of disconEval for a specific length of XS to be provable by induction.
Sorting lists of formulas #
To also sort a Finset (Finset Formula) we need an order on List Formula.
We use the lexicographic order List.le coming from the order on formulas.
TODO: these could be moved to Pdl.Syntax, next to Finset.pdlSort.
The linear order on formulas, bundling the results from Pdl.Syntax.
This is only used locally, to get the lexicographic order on List Formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The lexicographic List.le on List Formula agrees with the ≤ coming from
the linear order Formula.linearOrder.
Equations
- PDL.instDecidableRelListFormulaLe l1 l2 = decidable_of_iff (l1 ≤ l2) ⋯
The disjunction of conjunctions given by a Finset (Finset Formula).
The inner sets are sorted with Finset.pdlSort and the outer set is then sorted
lexicographically with List.le.
Equations
- x✝.pdlDiscon = PDL.discon ((Finset.image Finset.pdlSort x✝).sort List.le)
Instances For
Pairwise Union #
All concatenations of one formula list from each input family.
Equations
- PDL.pairunionList x✝¹ x✝ = (List.map (fun (xl : List PDL.Formula) => List.map (fun (yl : List PDL.Formula) => xl ++ yl) x✝) x✝¹).flatten
Instances For
All unions of one formula finset from each input family.
Equations
- PDL.pairunionFinset x✝¹ x✝ = x✝¹.biUnion fun (ga : Finset PDL.Formula) => x✝.biUnion fun (gb : Finset PDL.Formula) => {ga ∪ gb}
Instances For
Pairwise combination of two families of formula collections.
Equations
- PDL.«term_⊎_» = Lean.ParserDescr.trailingNode `PDL.«term_⊎_» 77 77 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊎") (Lean.ParserDescr.cat `term 78))
Instances For
Equations
- PDL.listHasUplus = { pairunion := PDL.pairunionList }
Equations
- PDL.finsetHasUplus = { pairunion := PDL.pairunionFinset }