Formula
Difficulty: easy — 3 definitions, 1 abbreviations, 0 lemmas, 0 theorems, 0 examples.
The syntax and semantics of classical propositional logic: formulas built from atomic propositions and the four connectives negation, conjunction, disjunction, and implication, and the truth table each formula computes.
Logic.PropositionalLogic.Formula
A propositional formula over a type \(\alpha\) of atomic propositions. Built from an atom, or from a smaller formula (or two) by one of the four connectives: negation, conjunction, disjunction, and implication.
inductive Logic.PropositionalLogic.Formula (α : Type) : Type
atom : α → Logic.PropositionalLogic.Formula α
neg : Logic.PropositionalLogic.Formula α → Logic.PropositionalLogic.Formula α
and : Logic.PropositionalLogic.Formula α → Logic.PropositionalLogic.Formula α → Logic.PropositionalLogic.Formula α
or : Logic.PropositionalLogic.Formula α → Logic.PropositionalLogic.Formula α → Logic.PropositionalLogic.Formula α
imp : Logic.PropositionalLogic.Formula α → Logic.PropositionalLogic.Formula α → Logic.PropositionalLogic.Formula α
Show details
Outer dependencies: (none)
Lean core dependencies: Eq, HEq, Nat, Nat.ble, Nat.decEq, Not, PProd, PULift, PUnit, SizeOf, cond, dite, eq_of_heq
Used by: Logic.PropositionalLogic.Formula.Derivable, Logic.PropositionalLogic.Formula.Derivable.ax, Logic.PropositionalLogic.Formula.Derivable.case_split, Logic.PropositionalLogic.Formula.Derivable.deduction, Logic.PropositionalLogic.Formula.Derivable.deduction_aux, Logic.PropositionalLogic.Formula.Derivable.provable_of_nil, Logic.PropositionalLogic.Formula.Derivable.toProofSystem, Logic.PropositionalLogic.Formula.Derivable.weaken, Logic.PropositionalLogic.Formula.Provable, Logic.PropositionalLogic.Formula.Provable.andElim1, Logic.PropositionalLogic.Formula.Provable.andElim2, Logic.PropositionalLogic.Formula.Provable.andIntro, Logic.PropositionalLogic.Formula.Provable.dne, Logic.PropositionalLogic.Formula.Provable.k, Logic.PropositionalLogic.Formula.Provable.mp, Logic.PropositionalLogic.Formula.Provable.negIntro, Logic.PropositionalLogic.Formula.Provable.orElim, Logic.PropositionalLogic.Formula.Provable.orIntro1, Logic.PropositionalLogic.Formula.Provable.orIntro2, Logic.PropositionalLogic.Formula.Provable.s, Logic.PropositionalLogic.Formula.SemanticEntails, Logic.PropositionalLogic.Formula.SemanticEntails.refl, Logic.PropositionalLogic.Formula.SemanticEntails.trans, Logic.PropositionalLogic.Formula.SyntacticEntails, Logic.PropositionalLogic.Formula.SyntacticEntails.refl, Logic.PropositionalLogic.Formula.SyntacticEntails.trans, Logic.PropositionalLogic.Formula.Tautology, Logic.PropositionalLogic.Formula.and_entails_left, Logic.PropositionalLogic.Formula.and_entails_left_syntactic, Logic.PropositionalLogic.Formula.and_entails_right, Logic.PropositionalLogic.Formula.and_entails_right_syntactic, Logic.PropositionalLogic.Formula.bigAnd, Logic.PropositionalLogic.Formula.bigAnd_val, Logic.PropositionalLogic.Formula.bigOr, Logic.PropositionalLogic.Formula.bigOr_val, Logic.PropositionalLogic.Formula.case_split, Logic.PropositionalLogic.Formula.completeness, Logic.PropositionalLogic.Formula.demonstrate_bigAnd_cons, Logic.PropositionalLogic.Formula.demonstrate_bigOr_cons, Logic.PropositionalLogic.Formula.demonstrate_semantic_iff_syntactic, Logic.PropositionalLogic.Formula.dnf, Logic.PropositionalLogic.Formula.dnf_val, Logic.PropositionalLogic.Formula.eliminate, Logic.PropositionalLogic.Formula.entails_and_iff, Logic.PropositionalLogic.Formula.entails_and_iff_syntactic, Logic.PropositionalLogic.Formula.entails_of_and_cases_syntactic, Logic.PropositionalLogic.Formula.entails_of_entails_neg_contra, Logic.PropositionalLogic.Formula.entails_of_entails_neg_contra_syntactic, Logic.PropositionalLogic.Formula.entails_of_or_cases_syntactic, Logic.PropositionalLogic.Formula.exists_andOrNot_of_boolFun, Logic.PropositionalLogic.Formula.falsum', Logic.PropositionalLogic.Formula.kalmar, Logic.PropositionalLogic.Formula.lift_provable, Logic.PropositionalLogic.Formula.literal, Logic.PropositionalLogic.Formula.literal_val, Logic.PropositionalLogic.Formula.minterm, Logic.PropositionalLogic.Formula.minterm_val, Logic.PropositionalLogic.Formula.nand, Logic.PropositionalLogic.Formula.or_entails_left, Logic.PropositionalLogic.Formula.or_entails_left_syntactic, Logic.PropositionalLogic.Formula.or_entails_right, Logic.PropositionalLogic.Formula.or_entails_right_syntactic, Logic.PropositionalLogic.Formula.provable_contrapose, Logic.PropositionalLogic.Formula.provable_deMorgan_or, Logic.PropositionalLogic.Formula.provable_dni, Logic.PropositionalLogic.Formula.provable_explosion, Logic.PropositionalLogic.Formula.provable_lem, Logic.PropositionalLogic.Formula.provable_self_imp, Logic.PropositionalLogic.Formula.semantic_iff_provable, Logic.PropositionalLogic.Formula.soundness, Logic.PropositionalLogic.Formula.starred, Logic.PropositionalLogic.Formula.syntactic_iff_provable, Logic.PropositionalLogic.Formula.val, Logic.PropositionalLogic.Formula.verum', Logic.PropositionalLogic.HilbertSchema, Logic.PropositionalLogic.HilbertSchema.isAxiom_of_ne_mp, Logic.PropositionalLogic.HilbertSchema.mp_isSimple, Logic.PropositionalLogic.NandFormula.exists_nand_of_boolFun, Logic.PropositionalLogic.NandFormula.ofFormula, Logic.PropositionalLogic.NandFormula.ofFormula_val, Logic.PropositionalLogic.NandFormula.toFormula, Logic.PropositionalLogic.derivable_mp, Logic.PropositionalLogic.derivation_of_axiom, Logic.PropositionalLogic.hilbert, Logic.PropositionalLogic.semanticBasis3, Logic.PropositionalLogic.semanticConnectives, Logic.PropositionalLogic.syntacticBasis3, Logic.PropositionalLogic.syntacticConnectives
Logic.PropositionalLogic.Valuation
An assignment of a truth value to every atom.
abbrev Logic.PropositionalLogic.Valuation (α : Type) : Type
Show details
| Logic.PropositionalLogic.Valuation α = (α → Bool)
Complexity: 5 (size of the value term)
Outer dependencies: (none)
Lean core dependencies: Bool
Used by: Logic.PropositionalLogic.Formula.SemanticEntails, Logic.PropositionalLogic.Formula.SemanticEntails.refl, Logic.PropositionalLogic.Formula.SemanticEntails.trans, Logic.PropositionalLogic.Formula.Tautology, Logic.PropositionalLogic.Formula.and_entails_left, Logic.PropositionalLogic.Formula.and_entails_right, Logic.PropositionalLogic.Formula.bigAnd_val, Logic.PropositionalLogic.Formula.bigOr_val, Logic.PropositionalLogic.Formula.completeness, Logic.PropositionalLogic.Formula.dnf, Logic.PropositionalLogic.Formula.dnf_val, Logic.PropositionalLogic.Formula.eliminate, Logic.PropositionalLogic.Formula.entails_and_iff, Logic.PropositionalLogic.Formula.entails_of_entails_neg_contra, Logic.PropositionalLogic.Formula.exists_andOrNot_of_boolFun, Logic.PropositionalLogic.Formula.kalmar, Logic.PropositionalLogic.Formula.literal, Logic.PropositionalLogic.Formula.literal_val, Logic.PropositionalLogic.Formula.minterm, Logic.PropositionalLogic.Formula.minterm_val, Logic.PropositionalLogic.Formula.or_entails_left, Logic.PropositionalLogic.Formula.or_entails_right, Logic.PropositionalLogic.Formula.semantic_iff_provable, Logic.PropositionalLogic.Formula.soundness, Logic.PropositionalLogic.Formula.starred, Logic.PropositionalLogic.Formula.val, Logic.PropositionalLogic.Formula.val_falsum', Logic.PropositionalLogic.Formula.val_verum', Logic.PropositionalLogic.NandFormula.exists_nand_of_boolFun, Logic.PropositionalLogic.NandFormula.ofFormula_val, Logic.PropositionalLogic.NandFormula.toFormula_val, Logic.PropositionalLogic.NandFormula.val, Logic.PropositionalLogic.semanticConnectives
Logic.PropositionalLogic.Formula.val
The truth value of a formula under a valuation: the truth table, computed structurally. Each connective’s clause is definitionally its usual truth-table rule, so it needs no separate lemma to unfold — plain simp already knows it.
def Logic.PropositionalLogic.Formula.val {α : Type} (v : Logic.PropositionalLogic.Valuation α) : Logic.PropositionalLogic.Formula α → Bool
Show details
| Logic.PropositionalLogic.Formula.val v (Logic.PropositionalLogic.Formula.atom a) = v a | Logic.PropositionalLogic.Formula.val v φ.neg = !Logic.PropositionalLogic.Formula.val v φ | Logic.PropositionalLogic.Formula.val v (φ.and ψ) = (Logic.PropositionalLogic.Formula.val v φ && Logic.PropositionalLogic.Formula.val v ψ) | Logic.PropositionalLogic.Formula.val v (φ.or ψ) = (Logic.PropositionalLogic.Formula.val v φ || Logic.PropositionalLogic.Formula.val v ψ) | Logic.PropositionalLogic.Formula.val v (φ.imp ψ) = (!Logic.PropositionalLogic.Formula.val v φ || Logic.PropositionalLogic.Formula.val v ψ)
Complexity: 27 (size of the value term)
Outer dependencies: Logic.PropositionalLogic.Formula, Logic.PropositionalLogic.Valuation
Lean core dependencies: Bool, Bool.and, Bool.not, Bool.or, Eq, Eq.mpr, Eq.symm, PProd, PUnit, congrArg, id
Used by: Logic.PropositionalLogic.Formula.SemanticEntails, Logic.PropositionalLogic.Formula.SemanticEntails.refl, Logic.PropositionalLogic.Formula.SemanticEntails.trans, Logic.PropositionalLogic.Formula.Tautology, Logic.PropositionalLogic.Formula.and_entails_left, Logic.PropositionalLogic.Formula.and_entails_right, Logic.PropositionalLogic.Formula.bigAnd_val, Logic.PropositionalLogic.Formula.bigOr_val, Logic.PropositionalLogic.Formula.completeness, Logic.PropositionalLogic.Formula.dnf_val, Logic.PropositionalLogic.Formula.entails_and_iff, Logic.PropositionalLogic.Formula.entails_of_entails_neg_contra, Logic.PropositionalLogic.Formula.exists_andOrNot_of_boolFun, Logic.PropositionalLogic.Formula.kalmar, Logic.PropositionalLogic.Formula.literal_val, Logic.PropositionalLogic.Formula.minterm_val, Logic.PropositionalLogic.Formula.or_entails_left, Logic.PropositionalLogic.Formula.or_entails_right, Logic.PropositionalLogic.Formula.semantic_iff_provable, Logic.PropositionalLogic.Formula.soundness, Logic.PropositionalLogic.Formula.starred, Logic.PropositionalLogic.Formula.val_falsum', Logic.PropositionalLogic.Formula.val_verum', Logic.PropositionalLogic.NandFormula.exists_nand_of_boolFun, Logic.PropositionalLogic.NandFormula.ofFormula_val, Logic.PropositionalLogic.NandFormula.toFormula_val, Logic.PropositionalLogic.semanticConnectives
Logic.PropositionalLogic.Formula.Tautology
A tautology: true under every valuation.
def Logic.PropositionalLogic.Formula.Tautology {α : Type} (φ : Logic.PropositionalLogic.Formula α) : Prop
Show details
| φ.Tautology = ∀ (v : Logic.PropositionalLogic.Valuation α), Logic.PropositionalLogic.Formula.val v φ = true
Complexity: 23 (size of the value term)
Outer dependencies: Logic.PropositionalLogic.Formula
Inner dependencies: Logic.PropositionalLogic.Formula.val, Logic.PropositionalLogic.Valuation
Dependency diagram
Drag to pan, Ctrl+scroll (or Cmd+scroll, or pinch on a touch screen) to zoom, click a node to jump to it.