在精益(命题逻辑)中表示具有多个假设的定理


不丶离
2024-12-23 11:11:40 (2月前)
  1. 真正的初学者在这里提问。我如何用多个假设来表示问题



</跨度>
?例如:

特定

一个
AB
AC
BD
光盘

证明命题D.

(问题来自不可思议的 证明机器,第2节问题3.我实际上正在阅读逻辑和证明,第4章,命题逻辑


</跨度>
但那里的练习较少)

显然这完全是微不足道的

2 条回复
  1. 0# 浮华丶 | 2019-08-31 10-32



    我认为通过在假设中使用And并使用 - &gt;来更清楚。这里有2个等效的样张,我更喜欢第一个




    1. def s2p3 {A B C D : Prop} (ha : A)
      (hab : A -> B) (hac : A -> C)
      (hbd : B -> D) (hcd : C -> D) : D
      := show D, from (hbd (hab ha))

    2. </code>


    除了使用示例之外,第二个与第一个相同,
    我相信你必须使用assume来指定参数的名称
    而不是在声明中




    1. example : A -> (A -> B) -> (A -> C) -> (B -> D) -> (C -> D) -> D :=
      assume ha : A,
      assume hab : A -> B,
      assume hac, You can actually just leave the types off the above 2
      assume hbd,
      assume hcd,
      show D, from (hbd (hab ha))

    2. </code>


    如果你想使用def语法,但问题是例如使用示例语法指定




    1. example : A -> (A -> B) -> (A -> C)
      -> (B -> D) -> (C -> D) -> D := s2p3

    2. </code>


    此外,在使用和在您的证明中,在拆包阶段
    你解包给定3,并给出5但从未在你的“show”证明中使用它们。
    所以你不需要打开它们,例如




    1. example : (( A )
      /\ ( A->B )
      /\ ( A->C )
      /\ ( B->D )
      /\ ( C->D ))
      -> D :=
      assume h,
      have given1: A, from and.left h,
      have given2: A -> B, from and.left (and.right h),
      have given4: B -> D, from and.left (and.right (and.right (and.right h))),
      show D, from given4 (given2 given1)

    2. </code>

登录 后才能参与评论