试图证明类型是`euclidean_semiring`的实例在Isabelle中

问题描述

我正在Isabelle / HOL中使用Nonstandard_Analysis会话,并且试图证明类型<!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <!-- jQuery library --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <!-- Latest compiled JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <!DOCTYPE html> <html> <head> <Meta name="viewport" content="width=device-width,initial-scale=1"> <style> .equal,.equal > div[class*='col-'] { display: -webkit-Box; display: -moz-Box; display: -ms-flexBox; display: -webkit-flex; display: flex; flex:1 1 auto; } </style> </head> <body> <div class="container-fluid"> <div class="row equal"> <!--begin panel 1 --> <div class="col-md-4"> <div style="text-align:center" class="panel panel-primary"> <div class="panel-heading"> <h1 class="panel-title text-center">Pending DTO</h1> </div> <!-- end panel-heading --> <div class="panel-body"> <p class="text-left lead2">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,when an unkNown printer took a galley of type and scrambled it to make a type specimen book.</p> </div> <!-- end panel-body --> </div> <!-- end panel-primary --> </div> <!--end col-md-4 --> <!-- begin panel 2 --> <div class="col-md-4"> <div style="text-align:center" class="panel panel-primary"> <div class="panel-heading"> <h1 class="panel-title">Gestíon de Redes Socials</h1> </div> <!-- end panel-heading --> <div class="panel-body"> <p class="text-left lead2">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,when an unkNown printer took a galley of type and scrambled it to make a type specimen book.Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,when an unkNown printer took a galley of type and scrambled it to make a type specimen book.</p> </div> <!-- end panel-body --> </div> <!-- end panel-primary --> </div> <!-- end col-md-4 --> <!--begin panel 3 --> <div class="col-md-4"> <div style="text-align:center" class="panel panel-primary"> <div class="panel-heading"> <h1 class="panel-title">Test</h1> </div> <!-- end panel-heading --> <div class="panel-body"> <p> test </p> </div> <!-- end panel-body --> </div> <!-- end panel-primary --> </div> <!-- end col-md-4 --> </div> <!-- end row --> </div> </body> </html>'a::euclidean_semiring star的实例。

我正在显示

euclidean_semiring

但出现以下错误

instance star ::  (euclidean_semiring) euclidean_semiring
proof (intro_classes)
  show "euclidean_size (0::'a star) = (0::nat)"

即使只是陈述所需的目标陈述。似乎有点赶上22。 No type arity star :: euclidean_semiring 指定如下

euclidean_semiring

我已经显示

  class euclidean_semiring = semidom_modulo + 
   fixes euclidean_size :: "'a ⇒ nat"
   assumes size_0 [simp]: "euclidean_size 0 = 0"
   assumes mod_size_less: 
     "b ≠ 0 ⟹ euclidean_size (a mod b) < euclidean_size b"
   assumes size_mult_mono:
     "b ≠ 0 ⟹ euclidean_size a ≤ euclidean_size (a * b)"

实际上,我想知道这个特定示例给出错误的原因,即使我能够显示类似instance star :: (semidom_modulo) semidom_modulo 之类的东西是因为这个特定类型类instance star :: (semiring_parity) semiring_parity具有一个参数,即euclidean_semiring

当然,我更希望对错误消息有更好的解释和建议的解决方法(如果可能),但是查看证明形式的示例也很有帮助

euclidean_size

尤其是当 instance X :: (Y) Y 是带有参数的类型类时,就像Y一样。

解决方法

是的,如果类型类具有参数,则必须使用roles.stream() .collect(Collectors.groupingBy(e -> e,Collectors.counting())) .entrySet() .forEach(e -> { if (e.getValue() > 1) { System.out.println("found a key which has duplicate value : " + e.getKey()); } }); 并为其提供定义。

instantiation

您可以在使用 instantiation star :: (euclidean_semiring) euclidean_semiring begin definition euclidean_size_star where "euclidean_size_star x = …" instance proof (intro_classes) … qed end 的库中的任何位置找到示例,例如instantiationeuclidean_semiring的实例化。