Hi,
In the post Scala implicits and the Curry-Howard correspondence, the logic implication is coded as (here in Scala 3)
trait A
given proofOfA: A()
trait B
given `A implies B`(using a: A): B()
summon[B] // passed
But the post coded the conjunction and disjunction using product type and sum type.
If the conjunction and disjunction are defined as the following using implication, how to code them in Scala 3? or it cannot be coded in Scala 3 at all and what has done in the post is the best.
A ∧ B ≡ ΠC : * .(A → B → C) → C, i.e., for all C, (A implies (B implies C)) implies C
A ∨ B ≡ ΠC : * .(A → C) → (B → C) → C, i.e., for all C, (A → C implies that (B → C implies C))
Your help is appreciated.
Guofeng