Floating point Isabelle中的浮点和区间算法

Floating point Isabelle中的浮点和区间算法,floating-point,isabelle,interval-arithmetic,Floating Point,Isabelle,Interval Arithmetic,我使用的是Isabelle中区间算术的Descision_Procs文件中的approxion.thy。该文件为您提供了一种证明实数不等式的策略,例如: theorem "3 ≤ x ∧ x ≤ 6 ⟹ sin ( pi / x) > 0.4" by (approximation 10) 现在,我想尝试一下实现的核心功能,它似乎是近似功能。这在Isabelle/HOL中通过计算证明实值不等式的第4.5.2节中有描述。以下是我所做的一些陈述: value "Float 3 (-1)" va

我使用的是Isabelle中区间算术的Descision_Procs文件中的approxion.thy。该文件为您提供了一种证明实数不等式的策略,例如:

theorem "3 ≤ x ∧ x ≤ 6 ⟹ sin ( pi / x) > 0.4" by (approximation 10)
现在,我想尝试一下实现的核心功能,它似乎是近似功能。这在Isabelle/HOL中通过计算证明实值不等式的第4.5.2节中有描述。以下是我所做的一些陈述:

value "Float 3 (-1)"
value "approx 1 (Num (Float 3 (-2))) [Some (Float 1 0,Float 4 0)]"
value "approx 1 (Add (Num (Float 3 (-2))) (Num (Float 4 (-8)))) [Some (Float 1 0,Float 4 0)]"
value "approx 1 (Add (Var 1) (Num (Float 4 (-8)))) [Some (Float 1 0,Float 4 0)]"
首先,我想问您是否知道一种更方便的方法来编写浮点(而不是浮点AB,可能有一种函数
real\u to\u Float r
)。然后,您可以看到,在给定一定精度(我理解为正确小数的数量)的情况下,函数计算作为第二个参数给出的操作的上界和下界

现在,主要问题如下:

  • 最后一个参数的用途是什么?我猜它们是第二个参数中变量的置信区间

  • 本文声称该函数还实现了区间算术。你能举个例子,看看这个函数是如何执行区间加法的吗?([a,b]+[c,d]=[a+c,b+d])


    • 这些东西都不是用来直接使用的;这就是为什么近似方法在它们上面提供了一个方便的层

      有一个类似于
      real\u to\u float
      的函数。它的名称是
      float\u of
      ,但它没有任何代码方程式,因此您无法真正使用它。我们可以为它证明一个代码方程式,但那会有点乏味

      至于您的其他问题:是的,最后一个参数是一个列表,其中第i个元素是已知第i个变量的值所在的区间

      是的,
      approx
      执行区间运算;事实上,这是它工作的核心。它完全按时间间隔运行。您提到的示例可以观察到,例如,当执行
      x+y
      时,
      x
      [1;2]
      中,
      y
      [-1;2]
      中:

      value "approx 10 (Add (Var 0) (Var 1))
               [Some (Float 1 0, Float 1 1), Some (Float (-1) 0, Float 1 1)]"
      
      返回间隔
      [0;4]

      "Some (Float 0 0, Float 2 1)"
        :: "(float × float) option"
      
      或者更直接地说:

      lemma "(x :: real) ∈ {1..2} ⟹ y ∈ {-1..2} ⟹ x + y ∈ {0..4}"
        by (approximation 10)