fstar

FStar function strange behavior

怎甘沉沦 提交于 2020-07-10 06:59:11
问题 It seems incorrect that the following simple function is accepted as a terminating one: val fnc : (nw: nat) -> (ni: nat) -> (ni_max: nat) -> bool let rec fnc nw ni ni_max = match ni with | ni_max -> false | _ -> fnc nw (nw + ni) ni_max Surprisingly, the function does terminate upon evaluating it, for instance, by fnc 0 0 1 and returns false . What am I missing out? 回答1: The ni_max in the first branch of the pattern is a fresh binder and has no relation to the parameter ni_max of the function.

FStar function strange behavior

血红的双手。 提交于 2020-07-10 06:59:10
问题 It seems incorrect that the following simple function is accepted as a terminating one: val fnc : (nw: nat) -> (ni: nat) -> (ni_max: nat) -> bool let rec fnc nw ni ni_max = match ni with | ni_max -> false | _ -> fnc nw (nw + ni) ni_max Surprisingly, the function does terminate upon evaluating it, for instance, by fnc 0 0 1 and returns false . What am I missing out? 回答1: The ni_max in the first branch of the pattern is a fresh binder and has no relation to the parameter ni_max of the function.

UVA 1601 The Morning after Halloween

别来无恙 提交于 2020-05-05 19:06:29
https://vjudge.net/problem/UVA-1601 题目 你在游乐场的鬼屋里当操作员,专门控制鬼屋里的机器人……某日没事干的出题人把这些机器人搬到了其他地方,你需要在最短的时间内遥控机器人让他们回到原位。所有机器人都可以同时在1秒内朝四个方向(上下左右)移动1格,但是每次移动都必须符合以下条件 每个格子只能有一个机器人 任意两个机器人的位置不能交换 不能移动到墙里…… 问你需要至少多少时间才能把所有机器人归位。 输入包含多组数据 地图的宽、高和机器人的数量 下面几行表示地图,其中小写字母表示机器人的位置,大写字母表示机器人的终点,'#'表示墙,' '表示可以走的位置…… 输出每组数据下的最短时间 样例输入 5 5 2 ##### #A#B# # # #b#a# ##### 16 4 3 ################ ## ########## ## # ABCcba # ################ 16 16 3 ################ ### ## # ## ## # ## # c# # ## ########b# # ## # # # # # # ## # # ## ## a# # # # # ### ## #### ## # ## # # # # # ##### # ## ## #### #B# # # ## C# # ### # #