:: RFUNCT_2 semantic presentation

theorem Th1: :: RFUNCT_2:1
canceled;

theorem Th2: :: RFUNCT_2:2
for b1, b2 being Function
for b3 being set holds (b2 | (b1 .: b3)) * (b1 | b3) = (b2 * b1) | b3
proof end;

theorem Th3: :: RFUNCT_2:3
for b1, b2 being Function
for b3, b4 being set holds (b2 | b4) * (b1 | b3) = (b2 * b1) | (b3 /\ (b1 " b4))
proof end;

theorem Th4: :: RFUNCT_2:4
for b1, b2 being Function
for b3 being set holds
( b3 c= dom (b2 * b1) iff ( b3 c= dom b1 & b1 .: b3 c= dom b2 ) )
proof end;

theorem Th5: :: RFUNCT_2:5
for b1 being Function
for b2 being set holds (b1 | b2) .: b2 = b1 .: b2
proof end;

definition
let c1 be Real_Sequence;
redefine func rng as rng c1 -> Subset of REAL ;
coherence
rng c1 is Subset of REAL
by RELSET_1:12;
end;

theorem Th6: :: RFUNCT_2:6
for b1, b2, b3 being Real_Sequence holds
( b1 = b2 - b3 iff for b4 being Element of NAT holds b1 . b4 = (b2 . b4) - (b3 . b4) )
proof end;

theorem Th7: :: RFUNCT_2:7
for b1 being Real_Sequence
for b2 being Element of NAT holds rng (b1 ^\ b2) c= rng b1
proof end;

theorem Th8: :: RFUNCT_2:8
for b1 being Real_Sequence
for b2 being Element of NAT
for b3 being PartFunc of REAL , REAL st rng b1 c= dom b3 holds
b1 . b2 in dom b3
proof end;

theorem Th9: :: RFUNCT_2:9
for b1 being set
for b2 being Real_Sequence holds
( b1 in rng b2 iff ex b3 being Element of NAT st b1 = b2 . b3 )
proof end;

theorem Th10: :: RFUNCT_2:10
for b1 being Real_Sequence
for b2 being Element of NAT holds b1 . b2 in rng b1 by Th9;

theorem Th11: :: RFUNCT_2:11
for b1, b2 being Real_Sequence st b1 is subsequence of b2 holds
rng b1 c= rng b2
proof end;

theorem Th12: :: RFUNCT_2:12
for b1, b2 being Real_Sequence st b1 is subsequence of b2 & b2 is_not_0 holds
b1 is_not_0
proof end;

theorem Th13: :: RFUNCT_2:13
for b1, b2 being Real_Sequence
for b3 being increasing Seq_of_Nat holds
( (b1 + b2) * b3 = (b1 * b3) + (b2 * b3) & (b1 - b2) * b3 = (b1 * b3) - (b2 * b3) & (b1 (#) b2) * b3 = (b1 * b3) (#) (b2 * b3) )
proof end;

theorem Th14: :: RFUNCT_2:14
for b1 being Element of REAL
for b2 being Real_Sequence
for b3 being increasing Seq_of_Nat holds (b1 (#) b2) * b3 = b1 (#) (b2 * b3)
proof end;

theorem Th15: :: RFUNCT_2:15
for b1 being Real_Sequence
for b2 being increasing Seq_of_Nat holds
( (- b1) * b2 = - (b1 * b2) & (abs b1) * b2 = abs (b1 * b2) )
proof end;

theorem Th16: :: RFUNCT_2:16
for b1 being Real_Sequence
for b2 being increasing Seq_of_Nat holds (b1 * b2) " = (b1 " ) * b2
proof end;

theorem Th17: :: RFUNCT_2:17
for b1, b2 being Real_Sequence
for b3 being increasing Seq_of_Nat holds (b1 /" b2) * b3 = (b1 * b3) /" (b2 * b3)
proof end;

theorem Th18: :: RFUNCT_2:18
for b1 being Real_Sequence st b1 is convergent & ( for b2 being Element of NAT holds b1 . b2 <= 0 ) holds
lim b1 <= 0
proof end;

theorem Th19: :: RFUNCT_2:19
for b1 being set
for b2 being Real_Sequence st ( for b3 being Element of NAT holds b2 . b3 in b1 ) holds
rng b2 c= b1
proof end;

definition
let c1 be PartFunc of REAL , REAL ;
let c2 be Real_Sequence;
assume E10: rng c2 c= dom c1 ;
func c1 * c2 -> Real_Sequence equals :Def1: :: RFUNCT_2:def 1
a1 * a2;
coherence
c1 * c2 is Real_Sequence
proof end;
end;

:: deftheorem Def1 defines * RFUNCT_2:def 1 :
for b1 being PartFunc of REAL , REAL
for b2 being Real_Sequence st rng b2 c= dom b1 holds
b1 * b2 = b1 * b2;

theorem Th20: :: RFUNCT_2:20
canceled;

theorem Th21: :: RFUNCT_2:21
for b1 being Real_Sequence
for b2 being Element of NAT
for b3 being PartFunc of REAL , REAL st rng b1 c= dom b3 holds
(b3 * b1) . b2 = b3 . (b1 . b2)
proof end;

theorem Th22: :: RFUNCT_2:22
for b1 being Real_Sequence
for b2 being Element of NAT
for b3 being PartFunc of REAL , REAL st rng b1 c= dom b3 holds
(b3 * b1) ^\ b2 = b3 * (b1 ^\ b2)
proof end;

theorem Th23: :: RFUNCT_2:23
for b1 being Real_Sequence
for b2, b3 being PartFunc of REAL , REAL st rng b1 c= (dom b2) /\ (dom b3) holds
( (b2 + b3) * b1 = (b2 * b1) + (b3 * b1) & (b2 - b3) * b1 = (b2 * b1) - (b3 * b1) & (b2 (#) b3) * b1 = (b2 * b1) (#) (b3 * b1) )
proof end;

theorem Th24: :: RFUNCT_2:24
for b1 being Real_Sequence
for b2 being PartFunc of REAL , REAL
for b3 being real number st rng b1 c= dom b2 holds
(b3 (#) b2) * b1 = b3 (#) (b2 * b1)
proof end;

theorem Th25: :: RFUNCT_2:25
for b1 being Real_Sequence
for b2 being PartFunc of REAL , REAL st rng b1 c= dom b2 holds
( abs (b2 * b1) = (abs b2) * b1 & - (b2 * b1) = (- b2) * b1 )
proof end;

theorem Th26: :: RFUNCT_2:26
for b1 being Real_Sequence
for b2 being PartFunc of REAL , REAL st rng b1 c= dom (b2 ^ ) holds
b2 * b1 is_not_0
proof end;

theorem Th27: :: RFUNCT_2:27
for b1 being Real_Sequence
for b2 being PartFunc of REAL , REAL st rng b1 c= dom (b2 ^ ) holds
(b2 ^ ) * b1 = (b2 * b1) "
proof end;

theorem Th28: :: RFUNCT_2:28
for b1 being Real_Sequence
for b2 being increasing Seq_of_Nat
for b3 being PartFunc of REAL , REAL st rng b1 c= dom b3 holds
(b3 * b1) * b2 = b3 * (b1 * b2)
proof end;

theorem Th29: :: RFUNCT_2:29
for b1, b2 being Real_Sequence
for b3 being PartFunc of REAL , REAL st rng b1 c= dom b3 & b2 is subsequence of b1 holds
b3 * b2 is subsequence of b3 * b1
proof end;

theorem Th30: :: RFUNCT_2:30
for b1 being Real_Sequence
for b2 being Element of NAT
for b3 being PartFunc of REAL , REAL st b3 is total holds
(b3 * b1) . b2 = b3 . (b1 . b2)
proof end;

theorem Th31: :: RFUNCT_2:31
for b1 being Real_Sequence
for b2 being Element of NAT
for b3 being PartFunc of REAL , REAL st b3 is total holds
b3 * (b1 ^\ b2) = (b3 * b1) ^\ b2
proof end;

theorem Th32: :: RFUNCT_2:32
for b1 being Real_Sequence
for b2, b3 being PartFunc of REAL , REAL st b2 is total & b3 is total holds
( (b2 + b3) * b1 = (b2 * b1) + (b3 * b1) & (b2 - b3) * b1 = (b2 * b1) - (b3 * b1) & (b2 (#) b3) * b1 = (b2 * b1) (#) (b3 * b1) )
proof end;

theorem Th33: :: RFUNCT_2:33
for b1 being Element of REAL
for b2 being Real_Sequence
for b3 being PartFunc of REAL , REAL st b3 is total holds
(b1 (#) b3) * b2 = b1 (#) (b3 * b2)
proof end;

theorem Th34: :: RFUNCT_2:34
for b1 being set
for b2 being Real_Sequence
for b3 being PartFunc of REAL , REAL st rng b2 c= dom (b3 | b1) holds
(b3 | b1) * b2 = b3 * b2
proof end;

theorem Th35: :: RFUNCT_2:35
for b1, b2 being set
for b3 being Real_Sequence
for b4 being PartFunc of REAL , REAL st rng b3 c= dom (b4 | b1) & ( rng b3 c= dom (b4 | b2) or b1 c= b2 ) holds
(b4 | b1) * b3 = (b4 | b2) * b3
proof end;

theorem Th36: :: RFUNCT_2:36
for b1 being set
for b2 being Real_Sequence
for b3 being PartFunc of REAL , REAL st rng b2 c= dom (b3 | b1) holds
abs ((b3 | b1) * b2) = ((abs b3) | b1) * b2
proof end;

theorem Th37: :: RFUNCT_2:37
for b1 being set
for b2 being Real_Sequence
for b3 being PartFunc of REAL , REAL st rng b2 c= dom (b3 | b1) & b3 " {0} = {} holds
((b3 ^ ) | b1) * b2 = ((b3 | b1) * b2) "
proof end;

theorem Th38: :: RFUNCT_2:38
for b1 being Real_Sequence
for b2 being PartFunc of REAL , REAL st rng b1 c= dom b2 holds
b2 .: (rng b1) = rng (b2 * b1)
proof end;

theorem Th39: :: RFUNCT_2:39
for b1 being Real_Sequence
for b2, b3 being PartFunc of REAL , REAL st rng b1 c= dom (b2 * b3) holds
b2 * (b3 * b1) = (b2 * b3) * b1
proof end;

registration
let c1 be set ;
let c2 be one-to-one Function;
cluster a2 | a1 -> one-to-one ;
coherence
c2 | c1 is one-to-one
by FUNCT_1:84;
end;

theorem Th40: :: RFUNCT_2:40
for b1 being set
for b2 being one-to-one Function holds (b2 | b1) " = (b2 " ) | (b2 .: b1)
proof end;

theorem Th41: :: RFUNCT_2:41
for b1 being PartFunc of REAL , REAL st rng b1 is bounded & upper_bound (rng b1) = lower_bound (rng b1) holds
b1 is_constant_on dom b1
proof end;

theorem Th42: :: RFUNCT_2:42
for b1 being set
for b2 being PartFunc of REAL , REAL st b1 c= dom b2 & b2 .: b1 is bounded & upper_bound (b2 .: b1) = lower_bound (b2 .: b1) holds
b2 is_constant_on b1
proof end;

definition
let c1 be PartFunc of REAL , REAL ;
let c2 be set ;
pred c1 is_increasing_on c2 means :Def2: :: RFUNCT_2:def 2
for b1, b2 being Element of REAL st b1 in a2 /\ (dom a1) & b2 in a2 /\ (dom a1) & b1 < b2 holds
a1 . b1 < a1 . b2;
pred c1 is_decreasing_on c2 means :Def3: :: RFUNCT_2:def 3
for b1, b2 being Element of REAL st b1 in a2 /\ (dom a1) & b2 in a2 /\ (dom a1) & b1 < b2 holds
a1 . b2 < a1 . b1;
pred c1 is_non_decreasing_on c2 means :Def4: :: RFUNCT_2:def 4
for b1, b2 being Element of REAL st b1 in a2 /\ (dom a1) & b2 in a2 /\ (dom a1) & b1 < b2 holds
a1 . b1 <= a1 . b2;
pred c1 is_non_increasing_on c2 means :Def5: :: RFUNCT_2:def 5
for b1, b2 being Element of REAL st b1 in a2 /\ (dom a1) & b2 in a2 /\ (dom a1) & b1 < b2 holds
a1 . b2 <= a1 . b1;
end;

:: deftheorem Def2 defines is_increasing_on RFUNCT_2:def 2 :
for b1 being PartFunc of REAL , REAL
for b2 being set holds
( b1 is_increasing_on b2 iff for b3, b4 being Element of REAL st b3 in b2 /\ (dom b1) & b4 in b2 /\ (dom b1) & b3 < b4 holds
b1 . b3 < b1 . b4 );

:: deftheorem Def3 defines is_decreasing_on RFUNCT_2:def 3 :
for b1 being PartFunc of REAL , REAL
for b2 being set holds
( b1 is_decreasing_on b2 iff for b3, b4 being Element of REAL st b3 in b2 /\ (dom b1) & b4 in b2 /\ (dom b1) & b3 < b4 holds
b1 . b4 < b1 . b3 );

:: deftheorem Def4 defines is_non_decreasing_on RFUNCT_2:def 4 :
for b1 being PartFunc of REAL , REAL
for b2 being set holds
( b1 is_non_decreasing_on b2 iff for b3, b4 being Element of REAL st b3 in b2 /\ (dom b1) & b4 in b2 /\ (dom b1) & b3 < b4 holds
b1 . b3 <= b1 . b4 );

:: deftheorem Def5 defines is_non_increasing_on RFUNCT_2:def 5 :
for b1 being PartFunc of REAL , REAL
for b2 being set holds
( b1 is_non_increasing_on b2 iff for b3, b4 being Element of REAL st b3 in b2 /\ (dom b1) & b4 in b2 /\ (dom b1) & b3 < b4 holds
b1 . b4 <= b1 . b3 );

definition
let c1 be PartFunc of REAL , REAL ;
let c2 be set ;
pred c1 is_monotone_on c2 means :Def6: :: RFUNCT_2:def 6
( a1 is_non_decreasing_on a2 or a1 is_non_increasing_on a2 );
end;

:: deftheorem Def6 defines is_monotone_on RFUNCT_2:def 6 :
for b1 being PartFunc of REAL , REAL
for b2 being set holds
( b1 is_monotone_on b2 iff ( b1 is_non_decreasing_on b2 or b1 is_non_increasing_on b2 ) );

theorem Th43: :: RFUNCT_2:43
canceled;

theorem Th44: :: RFUNCT_2:44
canceled;

theorem Th45: :: RFUNCT_2:45
canceled;

theorem Th46: :: RFUNCT_2:46
canceled;

theorem Th47: :: RFUNCT_2:47
canceled;

theorem Th48: :: RFUNCT_2:48
for b1 being set
for b2 being PartFunc of REAL , REAL holds
( b2 is_non_decreasing_on b1 iff for b3, b4 being Element of REAL st b3 in b1 /\ (dom b2) & b4 in b1 /\ (dom b2) & b3 <= b4 holds
b2 . b3 <= b2 . b4 )
proof end;

theorem Th49: :: RFUNCT_2:49
for b1 being set
for b2 being PartFunc of REAL , REAL holds
( b2 is_non_increasing_on b1 iff for b3, b4 being Element of REAL st b3 in b1 /\ (dom b2) & b4 in b1 /\ (dom b2) & b3 <= b4 holds
b2 . b4 <= b2 . b3 )
proof end;

theorem Th50: :: RFUNCT_2:50
for b1 being set
for b2 being PartFunc of REAL , REAL holds
( b2 is_increasing_on b1 iff b2 | b1 is_increasing_on b1 )
proof end;

theorem Th51: :: RFUNCT_2:51
for b1 being set
for b2 being PartFunc of REAL , REAL holds
( b2 is_decreasing_on b1 iff b2 | b1 is_decreasing_on b1 )
proof end;

theorem Th52: :: RFUNCT_2:52
for b1 being set
for b2 being PartFunc of REAL , REAL holds
( b2 is_non_decreasing_on b1 iff b2 | b1 is_non_decreasing_on b1 )
proof end;

theorem Th53: :: RFUNCT_2:53
for b1 being set
for b2 being PartFunc of REAL , REAL holds
( b2 is_non_increasing_on b1 iff b2 | b1 is_non_increasing_on b1 )
proof end;

theorem Th54: :: RFUNCT_2:54
for b1 being set
for b2 being PartFunc of REAL , REAL st b1 misses dom b2 holds
( b2 is_increasing_on b1 & b2 is_decreasing_on b1 & b2 is_non_decreasing_on b1 & b2 is_non_increasing_on b1 & b2 is_monotone_on b1 )
proof end;

theorem Th55: :: RFUNCT_2:55
for b1 being set
for b2 being PartFunc of REAL , REAL st b2 is_increasing_on b1 holds
b2 is_non_decreasing_on b1
proof end;

theorem Th56: :: RFUNCT_2:56
for b1 being set
for b2 being PartFunc of REAL , REAL st b2 is_decreasing_on b1 holds
b2 is_non_increasing_on b1
proof end;

theorem Th57: :: RFUNCT_2:57
for b1 being set
for b2 being PartFunc of REAL , REAL st b2 is_constant_on b1 holds
b2 is_non_decreasing_on b1
proof end;

theorem Th58: :: RFUNCT_2:58
for b1 being set
for b2 being PartFunc of REAL , REAL st b2 is_constant_on b1 holds
b2 is_non_increasing_on b1
proof end;

theorem Th59: :: RFUNCT_2:59
for b1, b2 being set
for b3 being PartFunc of REAL , REAL st b3 is_non_decreasing_on b1 & b3 is_non_increasing_on b2 holds
b3 is_constant_on b1 /\ b2
proof end;

theorem Th60: :: RFUNCT_2:60
for b1, b2 being set
for b3 being PartFunc of REAL , REAL st b1 c= b2 & b3 is_increasing_on b2 holds
b3 is_increasing_on b1
proof end;

theorem Th61: :: RFUNCT_2:61
for b1, b2 being set
for b3 being PartFunc of REAL , REAL st b1 c= b2 & b3 is_decreasing_on b2 holds
b3 is_decreasing_on b1
proof end;

theorem Th62: :: RFUNCT_2:62
for b1, b2 being set
for b3 being PartFunc of REAL , REAL st b1 c= b2 & b3 is_non_decreasing_on b2 holds
b3 is_non_decreasing_on b1
proof end;

theorem Th63: :: RFUNCT_2:63
for b1, b2 being set
for b3 being PartFunc of REAL , REAL st b1 c= b2 & b3 is_non_increasing_on b2 holds
b3 is_non_increasing_on b1
proof end;

theorem Th64: :: RFUNCT_2:64
for b1 being set
for b2 being Element of REAL
for b3 being PartFunc of REAL , REAL holds
( ( b3 is_increasing_on b1 & 0 < b2 implies b2 (#) b3 is_increasing_on b1 ) & ( b2 = 0 implies b2 (#) b3 is_constant_on b1 ) & ( b3 is_increasing_on b1 & b2 < 0 implies b2 (#) b3 is_decreasing_on b1 ) )
proof end;

theorem Th65: :: RFUNCT_2:65
for b1 being set
for b2 being Element of REAL
for b3 being PartFunc of REAL , REAL holds
( ( b3 is_decreasing_on b1 & 0 < b2 implies b2 (#) b3 is_decreasing_on b1 ) & ( b3 is_decreasing_on b1 & b2 < 0 implies b2 (#) b3 is_increasing_on b1 ) )
proof end;

theorem Th66: :: RFUNCT_2:66
for b1 being set
for b2 being Element of REAL
for b3 being PartFunc of REAL , REAL holds
( ( b3 is_non_decreasing_on b1 & 0 <= b2 implies b2 (#) b3 is_non_decreasing_on b1 ) & ( b3 is_non_decreasing_on b1 & b2 <= 0 implies b2 (#) b3 is_non_increasing_on b1 ) )
proof end;

theorem Th67: :: RFUNCT_2:67
for b1 being set
for b2 being Element of REAL
for b3 being PartFunc of REAL , REAL holds
( ( b3 is_non_increasing_on b1 & 0 <= b2 implies b2 (#) b3 is_non_increasing_on b1 ) & ( b3 is_non_increasing_on b1 & b2 <= 0 implies b2 (#) b3 is_non_decreasing_on b1 ) )
proof end;

theorem Th68: :: RFUNCT_2:68
for b1, b2 being set
for b3 being Element of REAL
for b4, b5 being PartFunc of REAL , REAL st b3 in (b1 /\ b2) /\ (dom (b4 + b5)) holds
( b3 in b1 /\ (dom b4) & b3 in b2 /\ (dom b5) )
proof end;

theorem Th69: :: RFUNCT_2:69
for b1, b2 being set
for b3, b4 being PartFunc of REAL , REAL holds
( ( b3 is_increasing_on b1 & b4 is_increasing_on b2 implies b3 + b4 is_increasing_on b1 /\ b2 ) & ( b3 is_decreasing_on b1 & b4 is_decreasing_on b2 implies b3 + b4 is_decreasing_on b1 /\ b2 ) & ( b3 is_non_decreasing_on b1 & b4 is_non_decreasing_on b2 implies b3 + b4 is_non_decreasing_on b1 /\ b2 ) & ( b3 is_non_increasing_on b1 & b4 is_non_increasing_on b2 implies b3 + b4 is_non_increasing_on b1 /\ b2 ) )
proof end;

theorem Th70: :: RFUNCT_2:70
for b1, b2 being set
for b3, b4 being PartFunc of REAL , REAL holds
( ( b3 is_increasing_on b1 & b4 is_constant_on b2 implies b3 + b4 is_increasing_on b1 /\ b2 ) & ( b3 is_decreasing_on b1 & b4 is_constant_on b2 implies b3 + b4 is_decreasing_on b1 /\ b2 ) )
proof end;

theorem Th71: :: RFUNCT_2:71
for b1, b2 being set
for b3, b4 being PartFunc of REAL , REAL st b3 is_increasing_on b1 & b4 is_non_decreasing_on b2 holds
b3 + b4 is_increasing_on b1 /\ b2
proof end;

theorem Th72: :: RFUNCT_2:72
for b1, b2 being set
for b3, b4 being PartFunc of REAL , REAL st b3 is_non_increasing_on b1 & b4 is_constant_on b2 holds
b3 + b4 is_non_increasing_on b1 /\ b2
proof end;

theorem Th73: :: RFUNCT_2:73
for b1, b2 being set
for b3, b4 being PartFunc of REAL , REAL st b3 is_decreasing_on b1 & b4 is_non_increasing_on b2 holds
b3 + b4 is_decreasing_on b1 /\ b2
proof end;

theorem Th74: :: RFUNCT_2:74
for b1, b2 being set
for b3, b4 being PartFunc of REAL , REAL st b3 is_non_decreasing_on b1 & b4 is_constant_on b2 holds
b3 + b4 is_non_decreasing_on b1 /\ b2
proof end;

theorem Th75: :: RFUNCT_2:75
for b1 being set
for b2 being PartFunc of REAL , REAL holds b2 is_increasing_on {b1}
proof end;

theorem Th76: :: RFUNCT_2:76
for b1 being set
for b2 being PartFunc of REAL , REAL holds b2 is_decreasing_on {b1}
proof end;

theorem Th77: :: RFUNCT_2:77
for b1 being set
for b2 being PartFunc of REAL , REAL holds b2 is_non_decreasing_on {b1}
proof end;

theorem Th78: :: RFUNCT_2:78
for b1 being set
for b2 being PartFunc of REAL , REAL holds b2 is_non_increasing_on {b1}
proof end;

theorem Th79: :: RFUNCT_2:79
for b1 being Subset of REAL holds id b1 is_increasing_on b1
proof end;

theorem Th80: :: RFUNCT_2:80
for b1 being set
for b2 being PartFunc of REAL , REAL st b2 is_increasing_on b1 holds
- b2 is_decreasing_on b1
proof end;

theorem Th81: :: RFUNCT_2:81
for b1 being set
for b2 being PartFunc of REAL , REAL st b2 is_non_decreasing_on b1 holds
- b2 is_non_increasing_on b1
proof end;

theorem Th82: :: RFUNCT_2:82
for b1, b2 being Element of REAL
for b3 being PartFunc of REAL , REAL st ( b3 is_increasing_on [.b1,b2.] or b3 is_decreasing_on [.b1,b2.] ) holds
b3 | [.b1,b2.] is one-to-one
proof end;

theorem Th83: :: RFUNCT_2:83
for b1, b2 being Element of REAL
for b3 being one-to-one PartFunc of REAL , REAL st b3 is_increasing_on [.b1,b2.] holds
(b3 | [.b1,b2.]) " is_increasing_on b3 .: [.b1,b2.]
proof end;

theorem Th84: :: RFUNCT_2:84
for b1, b2 being Element of REAL
for b3 being one-to-one PartFunc of REAL , REAL st b3 is_decreasing_on [.b1,b2.] holds
(b3 | [.b1,b2.]) " is_decreasing_on b3 .: [.b1,b2.]
proof end;