Syntax (Section 2.1) #
Equations
- instReprFormula = { reprPrec := instReprFormula.repr_1 }
Equations
- instReprProgram = { reprPrec := instReprProgram.repr_2 }
Equations
- One or more equations did not get rendered due to their size.
- instDecidableEqFormula.decEq_1 Formula.bottom Formula.bottom = isTrue ⋯
- instDecidableEqFormula.decEq_1 Formula.bottom (·a) = isFalse ⋯
- instDecidableEqFormula.decEq_1 Formula.bottom (~a) = isFalse ⋯
- instDecidableEqFormula.decEq_1 Formula.bottom (a ⋀ a_1) = isFalse ⋯
- instDecidableEqFormula.decEq_1 Formula.bottom (⌈a⌉a_1) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (·a) Formula.bottom = isFalse ⋯
- instDecidableEqFormula.decEq_1 (·a) (·b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- instDecidableEqFormula.decEq_1 (·a) (~a_1) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (·a) (a_1 ⋀ a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (·a) (⌈a_1⌉a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (~a) Formula.bottom = isFalse ⋯
- instDecidableEqFormula.decEq_1 (~a) (·a_1) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (~a) (~b) = if h : a = b then h ▸ have inst := instDecidableEqFormula.decEq_1 a a; isTrue ⋯ else isFalse ⋯
- instDecidableEqFormula.decEq_1 (~a) (a_1 ⋀ a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (~a) (⌈a_1⌉a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (a ⋀ a_1) Formula.bottom = isFalse ⋯
- instDecidableEqFormula.decEq_1 (a ⋀ a_1) (·a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (a ⋀ a_1) (~a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (a ⋀ a_1) (⌈a_2⌉a_3) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (⌈a⌉a_1) Formula.bottom = isFalse ⋯
- instDecidableEqFormula.decEq_1 (⌈a⌉a_1) (·a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (⌈a⌉a_1) (~a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_1 (⌈a⌉a_1) (a_2 ⋀ a_3) = isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
- instDecidableEqProgram.decEq_1 Formula.bottom Formula.bottom = isTrue ⋯
- instDecidableEqProgram.decEq_1 Formula.bottom (·a) = isFalse ⋯
- instDecidableEqProgram.decEq_1 Formula.bottom (~a) = isFalse ⋯
- instDecidableEqProgram.decEq_1 Formula.bottom (a ⋀ a_1) = isFalse ⋯
- instDecidableEqProgram.decEq_1 Formula.bottom (⌈a⌉a_1) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (·a) Formula.bottom = isFalse ⋯
- instDecidableEqProgram.decEq_1 (·a) (·b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- instDecidableEqProgram.decEq_1 (·a) (~a_1) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (·a) (a_1 ⋀ a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (·a) (⌈a_1⌉a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (~a) Formula.bottom = isFalse ⋯
- instDecidableEqProgram.decEq_1 (~a) (·a_1) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (~a) (~b) = if h : a = b then h ▸ have inst := instDecidableEqProgram.decEq_1 a a; isTrue ⋯ else isFalse ⋯
- instDecidableEqProgram.decEq_1 (~a) (a_1 ⋀ a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (~a) (⌈a_1⌉a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (a ⋀ a_1) Formula.bottom = isFalse ⋯
- instDecidableEqProgram.decEq_1 (a ⋀ a_1) (·a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (a ⋀ a_1) (~a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (a ⋀ a_1) (⌈a_2⌉a_3) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (⌈a⌉a_1) Formula.bottom = isFalse ⋯
- instDecidableEqProgram.decEq_1 (⌈a⌉a_1) (·a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (⌈a⌉a_1) (~a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_1 (⌈a⌉a_1) (a_2 ⋀ a_3) = isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
- instDecidableEqFormula.decEq_2 (·a) (·b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- instDecidableEqFormula.decEq_2 (·a) (a_1;'a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (·a) (a_1⋓a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (·a) (∗a_1) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (·a) (?'a_1) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (a;'a_1) (·a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (a;'a_1) (a_2⋓a_3) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (a;'a_1) (∗a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (a;'a_1) (?'a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (a⋓a_1) (·a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (a⋓a_1) (a_2;'a_3) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (a⋓a_1) (∗a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (a⋓a_1) (?'a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (∗a) (·a_1) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (∗a) (a_1;'a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (∗a) (a_1⋓a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (∗a) (∗b) = if h : a = b then h ▸ have inst := instDecidableEqFormula.decEq_2 a a; isTrue ⋯ else isFalse ⋯
- instDecidableEqFormula.decEq_2 (∗a) (?'a_1) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (?'a) (·a_1) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (?'a) (a_1;'a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (?'a) (a_1⋓a_2) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (?'a) (∗a_1) = isFalse ⋯
- instDecidableEqFormula.decEq_2 (?'a) (?'b) = if h : a = b then h ▸ have inst := instDecidableEqFormula.decEq_1 a a; isTrue ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
- instDecidableEqProgram.decEq_2 (·a) (·b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- instDecidableEqProgram.decEq_2 (·a) (a_1;'a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (·a) (a_1⋓a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (·a) (∗a_1) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (·a) (?'a_1) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (a;'a_1) (·a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (a;'a_1) (a_2⋓a_3) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (a;'a_1) (∗a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (a;'a_1) (?'a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (a⋓a_1) (·a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (a⋓a_1) (a_2;'a_3) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (a⋓a_1) (∗a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (a⋓a_1) (?'a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (∗a) (·a_1) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (∗a) (a_1;'a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (∗a) (a_1⋓a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (∗a) (∗b) = if h : a = b then h ▸ have inst := instDecidableEqProgram.decEq_2 a a; isTrue ⋯ else isFalse ⋯
- instDecidableEqProgram.decEq_2 (∗a) (?'a_1) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (?'a) (·a_1) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (?'a) (a_1;'a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (?'a) (a_1⋓a_2) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (?'a) (∗a_1) = isFalse ⋯
- instDecidableEqProgram.decEq_2 (?'a) (?'b) = if h : a = b then h ▸ have inst := instDecidableEqProgram.decEq_1 a a; isTrue ⋯ else isFalse ⋯
Instances For
Abbreviations and Notation #
Equations
- Program.steps [] = (?'~Formula.bottom)
- Program.steps (p :: ps) = (p;'Program.steps ps)
Instances For
Equations
- «term·_» = Lean.ParserDescr.node `«term·_» 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "·") (Lean.ParserDescr.cat `term 70))
Instances For
Equations
- «term·__1» = Lean.ParserDescr.node `«term·__1» 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "·") (Lean.ParserDescr.cat `term 70))
Instances For
Equations
- «term~_» = Lean.ParserDescr.node `«term~_» 69 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "~") (Lean.ParserDescr.cat `term 69))
Instances For
Equations
- Formula.instBot = { bot := Formula.bottom }
Equations
- Formula.insTop = { top := ~Formula.bottom }
Equations
- «term_⋀_» = Lean.ParserDescr.trailingNode `«term_⋀_» 66 67 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⋀ ") (Lean.ParserDescr.cat `term 66))
Instances For
Equations
- «term_⋁_» = Lean.ParserDescr.trailingNode `«term_⋁_» 60 61 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⋁ ") (Lean.ParserDescr.cat `term 60))
Instances For
Equations
- «term_↣_» = Lean.ParserDescr.trailingNode `«term_↣_» 55 56 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ↣ ") (Lean.ParserDescr.cat `term 55))
Instances For
Equations
- «term_⟷_» = Lean.ParserDescr.trailingNode `«term_⟷_» 55 56 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⟷ ") (Lean.ParserDescr.cat `term 55))
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- «term_;'_» = Lean.ParserDescr.trailingNode `«term_;'_» 33 33 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol ";'") (Lean.ParserDescr.cat `term 34))
Instances For
Equations
- «term_⋓_» = Lean.ParserDescr.trailingNode `«term_⋓_» 33 33 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⋓") (Lean.ParserDescr.cat `term 34))
Instances For
Equations
- «term∗_» = Lean.ParserDescr.node `«term∗_» 33 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "∗") (Lean.ParserDescr.cat `term 33))
Instances For
Equations
- term?'_ = Lean.ParserDescr.node `term?'_ 33 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "?'") (Lean.ParserDescr.cat `term 33))
Instances For
Union of a list of programs. The empty union is ?'⊥, a program that cannot be
executed, so that [(⋃ ∅)*]φ is equivalent to φ.
Equations
- Program.unions [] = (?'⊥)
- Program.unions [α] = α
- Program.unions (α :: rest) = (α⋓Program.unions rest)
Instances For
A basic formula is of the form ¬⊥, p, ¬p, [a]_ or ¬[a]_.
Note: in the article also ⊥ is basic, but not here because we want
to apply OneSidedLocalRule.bot to it.
Equations
Instances For
Equations
- instDecidablePredProgramIsAtomic (·a) = decidable_of_decidable_of_iff ⋯
- instDecidablePredProgramIsAtomic (a;'a_1) = decidable_of_decidable_of_iff ⋯
- instDecidablePredProgramIsAtomic (a⋓a_1) = decidable_of_decidable_of_iff ⋯
- instDecidablePredProgramIsAtomic (∗a) = decidable_of_decidable_of_iff ⋯
- instDecidablePredProgramIsAtomic (?'a) = decidable_of_decidable_of_iff ⋯
Equations
- One or more equations did not get rendered due to their size.
Tools for Box Formulas #
Loaded Formulas #
Loaded formulas consist of a non-empty sequence of loading boxes, and a normal formula.
For loading boxes we write ⌊α⌋ instead of ⌈α⌉.
- normal : Formula → AnyFormula
- loaded : LoadFormula → AnyFormula
Instances For
Equations
- instReprAnyFormula = { reprPrec := instReprAnyFormula.repr_1 }
Equations
- instReprLoadFormula = { reprPrec := instReprLoadFormula.repr_2 }
Equations
- instDecidableEqAnyFormula.decEq_1 (AnyFormula.normal a) (AnyFormula.normal b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- instDecidableEqAnyFormula.decEq_1 (AnyFormula.normal a) (AnyFormula.loaded a_1) = isFalse ⋯
- instDecidableEqAnyFormula.decEq_1 (AnyFormula.loaded a) (AnyFormula.normal a_1) = isFalse ⋯
- instDecidableEqAnyFormula.decEq_1 (AnyFormula.loaded a) (AnyFormula.loaded b) = if h : a = b then h ▸ have inst := instDecidableEqAnyFormula.decEq_2 a a; isTrue ⋯ else isFalse ⋯
Instances For
Equations
- instDecidableEqLoadFormula.decEq_1 (AnyFormula.normal a) (AnyFormula.normal b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- instDecidableEqLoadFormula.decEq_1 (AnyFormula.normal a) (AnyFormula.loaded a_1) = isFalse ⋯
- instDecidableEqLoadFormula.decEq_1 (AnyFormula.loaded a) (AnyFormula.normal a_1) = isFalse ⋯
- instDecidableEqLoadFormula.decEq_1 (AnyFormula.loaded a) (AnyFormula.loaded b) = if h : a = b then h ▸ have inst := instDecidableEqLoadFormula.decEq_2 a a; isTrue ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- instCoeFormulaAnyFormula = { coe := AnyFormula.normal }
Equations
Equations
- loadMulti x✝² x✝¹ x✝ = List.foldr (fun (β : Program) (lf : LoadFormula) => ⌊β⌋AnyFormula.loaded lf) (⌊x✝¹⌋AnyFormula.normal x✝) x✝²
Instances For
Equations
- (⌊⌊x✝¹⌋⌋x✝) = List.foldr (fun (β : Program) (lf : LoadFormula) => ⌊β⌋AnyFormula.loaded lf) x✝ x✝¹
Instances For
Instances For
Equations
- instReprNegLoadFormula = { reprPrec := instReprNegLoadFormula.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- «term~'_» = Lean.ParserDescr.node `«term~'_» 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "~'") (Lean.ParserDescr.cat `term 0))
Instances For
Equations
- «term~''_» = Lean.ParserDescr.node `«term~''_» 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "~''") (Lean.ParserDescr.cat `term 1023))
Instances For
Load a possibly already loaded formula χ with a sequence δ of boxes. The result is loaded iff δ≠[] or χ was loaded.
Equations
- AnyFormula.loadBoxes x✝¹ x✝ = List.foldr (fun (β : Program) (lf : AnyFormula) => AnyFormula.loaded (⌊β⌋lf)) x✝ x✝¹
Instances For
Equations
- (AnyFormula.normal a).unload = a
- (AnyFormula.loaded a).unload = a.unload
Instances For
Spliting of loaded formulas #
Split any formula into the list of loaded boxes and the free formula.
Instances For
Equations
- loadMulti_nonEmpty [] h x✝ = ⋯.elim
- loadMulti_nonEmpty [α] x_3 x✝ = ⌊α⌋AnyFormula.normal x✝
- loadMulti_nonEmpty (α :: d :: δ) x_3 x✝ = ⌊α⌋AnyFormula.loaded (loadMulti_nonEmpty (d :: δ) ⋯ x✝)
Instances For
splitLast #
Measures #
Equations
- lengthOfProgram (·a) = 1
- lengthOfProgram (a;'a_1) = 1 + lengthOfProgram a + lengthOfProgram a_1
- lengthOfProgram (a⋓a_1) = 1 + lengthOfProgram a + lengthOfProgram a_1
- lengthOfProgram (∗a) = 1 + lengthOfProgram a
- lengthOfProgram (?'a) = 2 + lengthOfFormula a
Instances For
Equations
- lengthOfFormula Formula.bottom = 1
- lengthOfFormula (·a) = 1
- lengthOfFormula (~a) = 1 + lengthOfFormula a
- lengthOfFormula (a ⋀ a_1) = 1 + lengthOfFormula a + lengthOfFormula a_1
- lengthOfFormula (⌈a⌉a_1) = 1 + lengthOfProgram a + lengthOfFormula a_1
Instances For
Equations
- formulaHasLength = { lengthOf := lengthOfFormula }
Equations
- setFormulaHasLength = { lengthOf := fun (X : Finset Formula) => X.sum lengthOfFormula }
Equations
- listFormulaHasLength = { lengthOf := fun (X : List Formula) => (List.map lengthOfFormula X).sum }
Equations
- programHasLength = { lengthOf := lengthOfProgram }
Equations
- setProgramHasLength = { lengthOf := fun (X : Finset Program) => X.sum lengthOfProgram }
Sorting formulas #
Needed to convert a Finset Formula to List Formula.
TODO: make this a separate file
Order: ⊥ < p < ¬φ < φ1∧φ2 < [α]φ
Note that we want this to be antisymmetric later, so we cannot just use < on some measure.
An alternative approach here would be to even go for Denumerable.
Equations
- Formula.bottom.le Formula.bottom = True
- Formula.bottom.le x✝ = True
- (·a).le Formula.bottom = False
- (·p).le (·p') = (p ≤ p')
- (·a).le x✝ = True
- (~a).le Formula.bottom = False
- (~a).le (·a_1) = False
- (~φ).le (~φ') = φ.le φ'
- (~a).le x✝ = True
- (a ⋀ a_1).le Formula.bottom = False
- (a ⋀ a_1).le (·a_2) = False
- (a ⋀ a_1).le (~a_2) = False
- (φ1 ⋀ φ2).le (φ1' ⋀ φ2') = (φ1.le φ1' ∧ (φ1 = φ1' → φ2.le φ2'))
- (a ⋀ a_1).le (⌈a_2⌉a_3) = True
- (⌈a⌉a_1).le Formula.bottom = False
- (⌈a⌉a_1).le (·a_2) = False
- (⌈a⌉a_1).le (~a_2) = False
- (⌈a⌉a_1).le (a_2 ⋀ a_3) = False
- (⌈α⌉φ).le (⌈α'⌉φ') = (α.le α' ∧ (α = α' → φ.le φ'))
Instances For
Equations
- (·a).le (·a') = (a ≤ a')
- (·a).le x✝ = True
- (a;'a_1).le (·a_2) = False
- (α;'β).le (α';'β') = (α.le α' ∧ (α = α' → β.le β'))
- (a;'a_1).le x✝ = True
- (a⋓a_1).le (·a_2) = False
- (a⋓a_1).le (a_2;'a_3) = False
- (α⋓β).le (α'⋓β') = (α.le α' ∧ (α = α' → β.le β'))
- (a⋓a_1).le (∗a_2) = True
- (a⋓a_1).le (?'a_2) = True
- (∗a).le (·a_1) = False
- (∗a).le (a_1;'a_2) = False
- (∗a).le (a_1⋓a_2) = False
- (∗α).le (∗α') = α.le α'
- (∗a).le (?'a_1) = True
- (?'a).le (·a_1) = False
- (?'a).le (a_1;'a_2) = False
- (?'a).le (a_1⋓a_2) = False
- (?'a).le (∗a_1) = False
- (?'τ).le (?'τ') = τ.le τ'
Instances For
Equations
- instLEFormula = { le := Formula.le }
Equations
- instLEProgram = { le := Program.le }
Deciding the order #
The order on formulas is decidable.
Equations
- Formula.bottom.decLe Formula.bottom = isTrue trivial
- Formula.bottom.decLe (·a) = isTrue trivial
- Formula.bottom.decLe (~a) = isTrue trivial
- Formula.bottom.decLe (a ⋀ a_1) = isTrue trivial
- Formula.bottom.decLe (⌈a⌉a_1) = isTrue trivial
- (·a).decLe Formula.bottom = isFalse not_false
- (·a).decLe (·b) = a.decLe b
- (·a).decLe (~a_1) = isTrue trivial
- (·a).decLe (a_1 ⋀ a_2) = isTrue trivial
- (·a).decLe (⌈a_1⌉a_2) = isTrue trivial
- (~a).decLe Formula.bottom = isFalse not_false
- (~a).decLe (·a_1) = isFalse not_false
- (~a).decLe (~b) = a.decLe b
- (~a).decLe (a_1 ⋀ a_2) = isTrue trivial
- (~a).decLe (⌈a_1⌉a_2) = isTrue trivial
- (a ⋀ a_1).decLe Formula.bottom = isFalse not_false
- (a ⋀ a_1).decLe (·a_2) = isFalse not_false
- (a ⋀ a_1).decLe (~a_2) = isFalse not_false
- (a ⋀ a_1).decLe (b ⋀ b_1) = instDecidableAnd
- (a ⋀ a_1).decLe (⌈a_2⌉a_3) = isTrue trivial
- (⌈a⌉a_1).decLe Formula.bottom = isFalse not_false
- (⌈a⌉a_1).decLe (·a_2) = isFalse not_false
- (⌈a⌉a_1).decLe (~a_2) = isFalse not_false
- (⌈a⌉a_1).decLe (a_2 ⋀ a_3) = isFalse not_false
- (⌈a⌉a_1).decLe (⌈b⌉b_1) = instDecidableAnd
Instances For
The order on programs is decidable.
Equations
- (·a).decLe (·b) = a.decLe b
- (·a).decLe (a_1;'a_2) = isTrue trivial
- (·a).decLe (a_1⋓a_2) = isTrue trivial
- (·a).decLe (∗a_1) = isTrue trivial
- (·a).decLe (?'a_1) = isTrue trivial
- (a;'a_1).decLe (·a_2) = isFalse not_false
- (a;'a_1).decLe (b;'b_1) = instDecidableAnd
- (a;'a_1).decLe (a_2⋓a_3) = isTrue trivial
- (a;'a_1).decLe (∗a_2) = isTrue trivial
- (a;'a_1).decLe (?'a_2) = isTrue trivial
- (a⋓a_1).decLe (·a_2) = isFalse not_false
- (a⋓a_1).decLe (a_2;'a_3) = isFalse not_false
- (a⋓a_1).decLe (b⋓b_1) = instDecidableAnd
- (a⋓a_1).decLe (∗a_2) = isTrue trivial
- (a⋓a_1).decLe (?'a_2) = isTrue trivial
- (∗a).decLe (·a_1) = isFalse not_false
- (∗a).decLe (a_1;'a_2) = isFalse not_false
- (∗a).decLe (a_1⋓a_2) = isFalse not_false
- (∗a).decLe (∗b) = a.decLe b
- (∗a).decLe (?'a_1) = isTrue trivial
- (?'a).decLe (·a_1) = isFalse not_false
- (?'a).decLe (a_1;'a_2) = isFalse not_false
- (?'a).decLe (a_1⋓a_2) = isFalse not_false
- (?'a).decLe (∗a_1) = isFalse not_false
- (?'a).decLe (?'b) = a.decLe b