mirror of
https://github.com/Smaug123/agdaproofs
synced 2025-10-13 07:38:40 +00:00
38 lines
2.6 KiB
Agda
38 lines
2.6 KiB
Agda
{-# OPTIONS --safe --warning=error #-}
|
|
|
|
open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
|
|
open import LogicalFormulae
|
|
open import Logic.PropositionalLogic
|
|
open import Functions
|
|
open import Numbers.Naturals.Naturals
|
|
open import Vectors
|
|
open import Boolean.Definition
|
|
|
|
module Logic.PropositionalAxiomsTautology where
|
|
|
|
axiomKTaut : {a : _} {A : Set a} (P Q : Propositions A) → Tautology (implies P (implies Q P))
|
|
axiomKTaut P Q v with inspect (Valuation.v v P)
|
|
axiomKTaut P Q v | BoolTrue with≡ pT with inspect (Valuation.v v Q)
|
|
axiomKTaut P Q v | BoolTrue with≡ pT | BoolTrue with≡ qT = Valuation.vImplicationT v (Valuation.vImplicationT v pT)
|
|
axiomKTaut P Q v | BoolTrue with≡ pT | BoolFalse with≡ qF = Valuation.vImplicationT v (Valuation.vImplicationVacuous v qF)
|
|
axiomKTaut P Q v | BoolFalse with≡ pF = Valuation.vImplicationVacuous v pF
|
|
|
|
axiomSTaut : {a : _} {A : Set a} (P Q R : Propositions A) → Tautology (implies (implies P (implies Q R)) (implies (implies P Q) (implies P R)))
|
|
axiomSTaut P Q R v with inspect (Valuation.v v P)
|
|
axiomSTaut P Q R v | BoolTrue with≡ pT with inspect (Valuation.v v Q)
|
|
axiomSTaut P Q R v | BoolTrue with≡ pT | BoolTrue with≡ qT with inspect (Valuation.v v R)
|
|
axiomSTaut P Q R v | BoolTrue with≡ pT | BoolTrue with≡ qT | BoolTrue with≡ rT = Valuation.vImplicationT v (Valuation.vImplicationT v (Valuation.vImplicationT v rT))
|
|
axiomSTaut P Q R v | BoolTrue with≡ pT | BoolTrue with≡ qT | BoolFalse with≡ rF = Valuation.vImplicationVacuous v (Valuation.vImplicationF v pT (Valuation.vImplicationF v qT rF))
|
|
axiomSTaut P Q R v | BoolTrue with≡ pT | BoolFalse with≡ qF = Valuation.vImplicationT v (Valuation.vImplicationVacuous v (Valuation.vImplicationF v pT qF))
|
|
axiomSTaut P Q R v | BoolFalse with≡ pF = Valuation.vImplicationT v (Valuation.vImplicationT v (Valuation.vImplicationVacuous v pF))
|
|
|
|
excludedMiddleTaut : {a : _} {A : Set a} (P : Propositions A) → Tautology (implies (prNot (prNot P)) P)
|
|
excludedMiddleTaut P v with inspect (Valuation.v v P)
|
|
excludedMiddleTaut P v | BoolTrue with≡ pT = Valuation.vImplicationT v pT
|
|
excludedMiddleTaut P v | BoolFalse with≡ pF = Valuation.vImplicationVacuous v (Valuation.vImplicationF v (Valuation.vImplicationVacuous v pF) (Valuation.vFalse v))
|
|
|
|
propositionalAxiomsTautology : {a : _} {A : Set a} (x : Sg ThreeElements (indexAxiom A)) → Tautology (IsSubset.ofElt propositionalAxioms x)
|
|
propositionalAxiomsTautology (One , (fst ,, snd)) = axiomKTaut fst snd
|
|
propositionalAxiomsTautology (Two , record { one = one ; two = two ; three = three }) = axiomSTaut one two three
|
|
propositionalAxiomsTautology (Three , b) = excludedMiddleTaut b
|