57 lines
1.6 KiB
Text
57 lines
1.6 KiB
Text
/-
|
||
Copyright (c) 2017 Microsoft Corporation. All rights reserved.
|
||
Released under Apache 2.0 license as described in the file LICENSE.
|
||
Author: Gabriel Ebner
|
||
-/
|
||
prelude
|
||
import .basic .lemmas init.meta init.data.int
|
||
|
||
namespace char
|
||
|
||
def is_whitespace (c : char) : Prop :=
|
||
c ∈ [#" ", #"\t", #"\n"]
|
||
|
||
def is_upper (c : char) : Prop :=
|
||
c.val ≥ 65 ∧ c.val ≤ 90
|
||
|
||
def is_lower (c : char) : Prop :=
|
||
c.val ≥ 97 ∧ c.val ≤ 122
|
||
|
||
def is_alpha (c : char) : Prop :=
|
||
c.is_upper ∨ c.is_lower
|
||
|
||
def is_digit (c : char) : Prop :=
|
||
c.val ≥ 48 ∧ c.val ≤ 57
|
||
|
||
def is_alphanum (c : char) : Prop :=
|
||
c.is_alpha ∨ c.is_digit
|
||
|
||
def is_punctuation (c : char) : Prop :=
|
||
c ∈ [#" ", #",", #".", #"?", #"!", #";", #"-", #"'"]
|
||
|
||
def to_lower (c : char) : char :=
|
||
let n := to_nat c in
|
||
if n >= 65 ∧ n <= 90 then of_nat (n + 32) else c
|
||
|
||
instance decidable_is_whitespace : decidable_pred is_whitespace :=
|
||
begin intro c, delta is_whitespace, apply_instance end
|
||
|
||
instance decidable_is_upper : decidable_pred is_upper :=
|
||
begin intro c, delta is_upper, apply_instance end
|
||
|
||
instance decidable_is_lower : decidable_pred is_lower :=
|
||
begin intro c, delta is_lower, apply_instance end
|
||
|
||
instance decidable_is_alpha : decidable_pred is_alpha :=
|
||
begin intro c, delta is_alpha, apply_instance end
|
||
|
||
instance decidable_is_digit : decidable_pred is_digit :=
|
||
begin intro c, delta is_digit, apply_instance end
|
||
|
||
instance decidable_is_alphanum : decidable_pred is_alphanum :=
|
||
begin intro c, delta is_alphanum, apply_instance end
|
||
|
||
instance decidable_is_punctuation : decidable_pred is_punctuation :=
|
||
begin intro c, delta is_punctuation, apply_instance end
|
||
|
||
end char
|