如何在 Coq 中将一条线的公理定义为两点

How to define axiom of a line as two points in Coq

我正在尝试在 Coq 中找到一个例子 axiom 类似于几何中的线公理:如果给定两个点,则在这两个点之间存在一条线点。我想看看如何在 Coq 中定义它。固有地选择这个简单的直线公理来查看如何定义非常原始的东西,因为我很难在自然语言之外定义它。

具体来说,我看过这两个公理,想知道在 Coq 中如何定义这两个公理:

  1. Any two distinct points always determine a line
  2. Any two distinct points of a line determine this line uniquely

您似乎几乎可以将它们合并为一个定义,所以我想从语法和语义上了解如何在 Coq 中编写它。

我真的不知道 Coq 是怎么写的,只是想看看他们是怎么做的。但如果我要尝试它似乎是这样的:

Axiom line : forall ptA:Point ptB:Point, line ptA ptB.

但这需要一条线和一个点对象。

Axiom line : forall ptA ptB, line ptA ptB.
Definition Line ptA ptB -> (...) No idea.
Definition Point ...

这是一种可能性。 exists!连接词表示唯一存在。

Axiom point : Type.
Axiom line  : Type.
Axiom lies_in : point -> line -> Prop.
Axiom ax : forall (p1 p2 : point), p1 <> p2 ->
           exists! l : line, lies_in p1 l /\ lies_in p2 l.